package com.wsestadio.controller.ws;

import java.util.Date;
import java.util.List;

import javax.jws.WebMethod;
import javax.jws.WebService;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.wsestadio.dominio.Estadio;
import com.wsestadio.service.RegistroService;

@Component
@WebService(serviceName = "ServiceEstadio")
public class WSEstadioControllerService {

	private static final Logger logger = LoggerFactory.getLogger(WSEstadioControllerService.class);
	
	@Autowired
	private RegistroService registroService;

	@WebMethod
	public Estadio agregarNuevoEstadio(String uuid, Estadio estadio, 
			int cantidadAsientosTribunaNorte, 
			int cantidadAsientosTribunaOeste, 
			int cantidadAsientosTribunaEste,
			int cantidadAsientosTribunaSur) throws Exception {
		logger.debug("agregarNuevoEstadio estadio.getId():"+estadio.getId()+" uuid:"+uuid+" cantidadAsientosTribunaNorte:"+cantidadAsientosTribunaNorte
				+" cantidadAsientosTribunaOeste:"+cantidadAsientosTribunaOeste
				+" cantidadAsientosTribunaEste:"+cantidadAsientosTribunaEste
				+" cantidadAsientosTribunaSur:"+cantidadAsientosTribunaSur);		
		int total = cantidadAsientosTribunaNorte + cantidadAsientosTribunaOeste + cantidadAsientosTribunaEste + cantidadAsientosTribunaSur;
		estadio.setCantidadAsientos(total);
		estadio.setActivo(true);
		estadio.setFechaRegistro(new Date());
		estadio.setFechaActualizada(new Date());
		estadio = registroService.registrarNuevoEstadio(uuid, estadio, cantidadAsientosTribunaNorte, cantidadAsientosTribunaOeste, cantidadAsientosTribunaEste,
				cantidadAsientosTribunaSur);
		return estadio;

	}
	
	@WebMethod
	public Estadio getEstadio(long idEstadio){		
		Estadio e = registroService.getEstadio(idEstadio);		
		return e;	
	} 
	
	
	@WebMethod
	public Estadio actualizarEstadio(String uuid, Estadio estadio, 
			int cantidadAsientosTribunaNorte, 
			int cantidadAsientosTribunaOeste, 
			int cantidadAsientosTribunaEste,
			int cantidadAsientosTribunaSur) throws Exception {		
		logger.debug("actualizarEstadio estadio.getId():"+estadio.getId()+" uuid:"+uuid+" cantidadAsientosTribunaNorte:"+cantidadAsientosTribunaNorte
				+" cantidadAsientosTribunaOeste:"+cantidadAsientosTribunaOeste
				+" cantidadAsientosTribunaEste:"+cantidadAsientosTribunaEste
				+" cantidadAsientosTribunaSur:"+cantidadAsientosTribunaSur);			
		int total = cantidadAsientosTribunaNorte + cantidadAsientosTribunaOeste + cantidadAsientosTribunaEste + cantidadAsientosTribunaSur;
		estadio.setCantidadAsientos(total);
		estadio = registroService.actualizarEstadio(uuid, estadio, cantidadAsientosTribunaNorte, cantidadAsientosTribunaOeste, cantidadAsientosTribunaEste,
				cantidadAsientosTribunaSur);		
		return estadio;
	}
	
	@WebMethod
	public void cambiarEstadoActivadoEstadio(Estadio estadio,boolean activo) throws Exception {
		logger.debug("actualizarEstadio estadio.getId():"+estadio.getId()+ " activo:"+activo);
		registroService.cambiarEstadoActivadoEstadio(estadio,activo);		
	}

	@WebMethod
	public List<Estadio> listarEstadios(){
		logger.debug("listarEstadios ");
		List<Estadio> listaEstadios = registroService.getListaEstadios();		
		return listaEstadios;
	}
	
	@WebMethod
	public List<Estadio> listarEstadiosActivos() throws Exception{
		logger.debug("listarEstadiosActivos ");
		List<Estadio> listaEstadios;		
		listaEstadios = registroService.listarEstadiosActivos();
		return listaEstadios;		
	}
	
	
	
	
}
